home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 46
/
Aminet 46 (2001)(GTI - Schatztruhe)[!][Dec 2001].iso
/
Aminet
/
text
/
edit
/
edt10src.lha
/
txt
/
RxSelection.mod
< prev
next >
Wrap
Text File
|
1995-04-09
|
3KB
|
162 lines
(*
.name RxSelection
.task arexx-commands for selections
.release 1.0
.language Oberon-2
.translator Amiga Oberon 3.2
.system req. AmigaOS 2.04 or higher
.author Joachim Barheine
.address Hochgrevestr. 3, 38640 Goslar
.copyright (c) 1995 by J. Barheine
*)
(* .info: 08/04/95, 14:12:45, version 1 *)
MODULE RxSelection;
IMPORT
EClip,
F:= Files,
GUI,
IO:= IOServer,
K:= Kernel,
P:= EPrint,
Req:= ERequests,
Rx:= ERexx,
RxRequests,
Str:= StrPool,
T:= ETexts,
W:= Windows;
PROCEDURE BeginMark* (w: W.Window);
BEGIN
w.Mark(w.pos, w.pos);
END BeginMark;
PROCEDURE Copy* (w: W.Window);
VAR
unit: LONGINT;
BEGIN
Rx.GetNumDef(unit, 0);
EClip.Copy(w, SHORT(unit));
END Copy;
PROCEDURE Cut* (w: W.Window);
VAR
unit: LONGINT;
BEGIN
Rx.GetNumDef(unit, 0);
EClip.Cut(w, SHORT(unit));
END Cut;
PROCEDURE EndMark* (w: W.Window);
BEGIN
IF W.markDef IN w.flags THEN
w.Mark(w.markBegin, w.pos);
ELSE
w.Mark(w.text(T.Text).LineBegin(w.pos), w.text(T.Text).LineEnd(w.pos));
END;
END EndMark;
PROCEDURE Erase* (w: W.Window);
BEGIN
IF W.markDef IN w.flags THEN
w.text(T.Text).Delete(w.markBegin, w.markEnd - w.markBegin + 1);
ELSE
GUI.Flash;
END;
END Erase;
PROCEDURE Paste* (w: W.Window);
VAR
unit: LONGINT;
BEGIN
Rx.GetNumDef(unit, 0);
EClip.Paste(w, SHORT(unit));
END Paste;
PROCEDURE PrintClip* (w: W.Window);
BEGIN
IF W.markDef IN w.flags THEN
IO.Busy(w.text, Str.printingClip^);
IF RxRequests.ReqPrint(w) THEN
P.Print(w, w.markBegin, w.markEnd);
END;
IO.BusyDone(w.text);
END;
END PrintClip;
PROCEDURE ShiftClip* (w: W.Window);
VAR
t: T.Text;
n, a, b, i, len: LONGINT;
space: K.DynString;
BEGIN
t:= w.text(T.Text);
IF W.markDef IN w.flags THEN
t.LinkChanges;
len:= w.markEnd - w.markBegin + 1;
IF len > 600 THEN IO.DisplayOff(t) END;
Rx.GetNumDef(n, 1);
IF n > 0 THEN
NEW(space, n);
FOR i:= 0 TO n - 1 DO space[i]:= " " END;
a:= t.LineBegin(w.markBegin);
WHILE a < w.markEnd DO
t.Insert(a, space^, n);
a:= t.LineEnd(a) + 1;
END;
DISPOSE(space);
ELSIF n < 0 THEN
a:= t.LineBegin(w.markBegin);
WHILE a < w.markEnd DO
b:= t.LineEnd(a);
IF b - a < -n THEN
t.Delete(a, n - a);
ELSE
t.Delete(a, -n);
END;
a:= t.LineEnd(a) + 1;
END;
END;
IF len > 600 THEN IO.DisplayOn(t) END;
t.LinkChangesDone;
ELSE
GUI.Flash;
END;
END ShiftClip;
PROCEDURE SaveClip* (w: W.Window);
VAR
filename: ARRAY F.filenameLen OF CHAR;
BEGIN
F.GetFilename(filename, w.text(T.Text).path, "");
IO.Busy(w.text, Str.savingClip^);
IF Rx.GetStrLast(filename) OR Req.ReqFile(w.win, filename, TRUE) THEN
w.Refresh;
EClip.Save(w, filename);
END;
IO.BusyDone(w.text);
END SaveClip;
PROCEDURE UnMark* (w: W.Window);
BEGIN
IF W.markDef IN w.flags THEN w.UnMark END;
END UnMark;
END RxSelection.